import logging
import sys
from .config import settings

# 配置日志
def setup_logging():
    """配置应用日志"""
    # 使用属性访问方式获取日志配置
    log_config = settings.log_config
    
    # 获取根日志器
    root_logger = logging.getLogger()
    root_logger.setLevel(getattr(logging, log_config.level))
    
    # 清除已有的处理器
    root_logger.handlers.clear()
    
    # 创建控制台处理器
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setLevel(getattr(logging, log_config.level))
    
    # 创建格式化器
    formatter = logging.Formatter(log_config.format)
    console_handler.setFormatter(formatter)
    
    # 添加控制台处理器到根日志器
    root_logger.addHandler(console_handler)
    
    # 如果配置了日志文件，添加文件处理器
    if log_config.file:
        file_handler = logging.FileHandler(log_config.file)
        file_handler.setLevel(getattr(logging, log_config.level))
        file_handler.setFormatter(formatter)
        root_logger.addHandler(file_handler)
    
    # 设置FastAPI的访问日志格式
    logging.getLogger("uvicorn.access").handlers.clear()
    
    # 设置SQLAlchemy引擎的日志级别为INFO，这样会输出所有生成的SQL语句
    sqlalchemy_logger = logging.getLogger("sqlalchemy.engine")
    sqlalchemy_logger.setLevel(logging.INFO)
    
    # 如果需要更详细的SQL执行信息（包括参数绑定），可以设置为DEBUG级别
    # sqlalchemy_logger.setLevel(logging.DEBUG)
    
    # 设置FastAPI的日志级别
    logging.getLogger("fastapi").setLevel(getattr(logging, log_config.level))